﻿#include "RenderShader.h"
#include "WriteInShader.h"

CRenderShader::CRenderShader()
{
    WriteInShader=new CWriteInShader();
}

void CRenderShader::SetShaderData(TVector<uint8_t> InShaderData,EShaderStage InShaderStage)
{
    std::lock_guard<std::mutex> Lock(WriteInShader->Mutex);
    WriteInShader->Data=InShaderData;
    WriteInShader->Stage=InShaderStage;
}

// vk::ShaderModule CRenderShader::GetShaderModule()
// {
//     return ShaderModule;
// }

// vk::ShaderStageFlagBits CRenderShader::GetShaderStage()
// {
//     return ShaderStage;
// }

// bool CRenderShader::IsDirty() 
// {
//     std::lock_guard<std::mutex> Lock(ShaderDataMutex);
//     return !WriteInShaderData.Empty();
// }

// void CRenderShader::UpdateShader()
// {
//     std::lock_guard<std::mutex> Lock(ShaderDataMutex);

//     {

//         vk::ShaderModuleCreateInfo VertexShaderInfo=vk::ShaderModuleCreateInfo()
//         .setCodeSize(WriteInShaderData.Num())
//         .setPCode((uint32_t*)WriteInShaderData.Data());

//         ShaderModule=CVulkanContext::Get()->GetDevice().createShaderModule(VertexShaderInfo);       
//     }

//     ShaderStage=WriteInShaderStage; 

//     WriteInShaderData.Clear();
// }
